In a debugging operation performed while developing software, it is often the case where a function of stopping the execution of the program is used at a point of time the operation arrives at a designated location of a program. This designated portion is called a breakpoint. The breakpoint may be classified as a breakpoint implemented by hardware (hardware breakpoint) or a breakpoint implemented by software (software breakpoint).
When hardware breakpoints are used, breakpoints may be set individually for each processor core. Setting a breakpoint for one core is advantageous in parallelized applications because doing so does not disrupt the execution of other cores that execute in parallel with the core for which the breakpoint is set. However, the number of hardware breakpoints which may be set is limited.
On the other hand, software breakpoints may be implemented by replacing a command at a designated location with a particular command which stops the execution of the program. However, when a software breakpoint is used, a command in memory is rewritten. Accordingly, when an information processing apparatus on which software is executed has a plurality of processor cores, and these cores use a common shared memory, the execution of software is stopped in each core that executes the corresponding command. That is, in the past, when using a software breakpoint, it has not been possible to set a software breakpoint for one core out of a plurality of cores.
Examples of related art include JP-A-2004-103024 and JP-A-8-305607.